This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
data = bgg.orginal %>%
filter(
# Removes observations that are incorrectly recorded
min_players<=max_players, # The maximum number of recommended players cannot logically be less than the minimum number of recommended players
min_time<=max_time, # The maximum estimated play time cannot logically be less than the minimum estimated play time
between(weight, 1, 5), # Weight is calculated by averaging votes from a scale of 1-5, thus we remove observations where the weight is less than 1 or greater than 5.
# Removes "games" that stand in as miscellaneous categories for the data; These are not board games; They only act as generalized placeholders and thus are irrelevant to our analysis
names!="Unpublished Prototype",
names!="Miscellaneous Game Accessory",
names!="Traditional Card Games",
names!="Outside the Scope of BGG"
) %>%
select(!c(bgg_url, game_id, image_url, designer)) %>% # The url variables cannot be used in a data analysis, and game_id & designer are not relevant to our data analysis
rename(Rank=rank,Name=names,Min_Players=min_players,Max_Players=max_players,Avg_Time=avg_time,Min_Time=min_time,Max_Time=max_time,Year_Pubd=year,Avg_Rating=avg_rating,Geek_Rating=geek_rating,Num_Votes=num_votes,Min_Age=age,mechanics=mechanic,Num_Owned=owned,categories=category,Complexity=weight) # Renames variables to accurately reflect their utility
# Based on the data source, values of 0 for the following variables indicate that the publisher did not provide data or that data for the variable was unavailable; Since the data is numeric, a "0" entry might be misconstrued as an acceptable value, thus we convert 0 to NA to properly reflect this.
data$Min_Players = replace(data$Min_Players, data$Min_Players==0, NA) # 0 players cannot play a game; this is missing data
data$Max_Players = replace(data$Max_Players, data$Max_Players==0, NA) # 0 players cannot play a game; this is missing data
data$Min_Age = replace(data$Min_Age, data$Min_Age==0, NA) # Someone who is 0 years old cannot play a game; this is missing data
data$Year_Pubd = replace(data$Year_Pubd, data$Year_Pubd==0, NA) # These games have no confirmed initial publication date; this is unavailable data
#Making new categories
activity_cat = c("CityBuilding","Civilization","Educational","Maze","PartyGame","Puzzle","PikeandShot","Print&Play","Racing","TerritoryBuilding","Transportation")
component_cat = c("CardGame","CollectibleComponents","Dice","Electronic","Miniatures")
non_game_cat = c("AbstractStrategy","Book","ExpansionforBase-game","GameSystem")
wargames_cat = c("Wargame","WorldWarI","WorldWarII","VietnamWar","Napoleonic","ModernWarfare","CivilWar","AmericanCivilWar","Post-Napoleonic","AmericanRevolutionaryWar","AmericanIndianWars","KoreanWar")
skills_cat = c("Action/Dexterity","Bluffing","Deduction","Economic","Math","Medical","Number","Memory","Negotiation","Real-time","Trivia","WordGame")
entertainment_media_cat = c("ComicBook/Strip","Movies/TV/Radiotheme","Music","Novel-based","Political","Sports","VideoGameTheme")
thematic_cat=c("Adventure","AgeofReason","AmericanWest","Ancient","Animals","Arabian","Aviation/Flight","Children'sGame","Environmental","Exploration","Fantasy","Farming","Fighting","Horror","Humor","Industry/Manufacturing","Mafia","Mature/Adult","Medieval","Murder/Mystery","Mythology","Nautical","Pirates","Prehistoric","Religious","Renaissance","ScienceFiction","SpaceExploration","Spies/SecretAgents","Trains","Travel","Zombies")
#Making new mechanics
ip_mech = c("VariablePlayerPowers","Co-operativePlay","Partnerships","PlayerElimination","RolePlaying","Trading","Action/MovementProgramming","Voting","Acting","Singing")
resource_mech = c("SetCollection","ActionPointAllowanceSystem","Auction/Bidding","WorkerPlacement","Pick-upandDeliver","StockHolding","CommoditySpeculation ","Betting/Wagering")
card_mech = c("HandManagement","CardDrafting","Deck/PoolBuilding","Campaign/BattleCardDriven","TakeThat","Trick-taking")
spacetime_mech = c("DiceRolling","AreaControl/AreaInfluence","ModularBoard","TilePlacement","Hex-and-Counter","AreaMovement","GridMovement","PointtoPointMovement","Route/NetworkBuilding","PatternBuilding","Roll/SpinandMove","AreaEnclosure","TimeTrack","Area-Impulse","CrayonRailSystem")
strategy_mech = c("SimultaneousActionSelection","Simulation","PressYourLuck","SecretUnitDeployment","Memory","VariablePhaseOrder","PatternRecognition","Storytelling","Chit-PullSystem","Paper-and-Pencil","Rock-Paper-Scissors","LineDrawing")
data = data %>%
mutate("Activity_Game"=F,
"Component_Game"=F,
"Non-Game"=F,
"Wargame"=F,
"Skill_Game"=F,
"Entertainment_Media_Game"=F,
"Thematic_Game"=F,
"Interpersonal_Mechanic"=F,
"Resource_Mechanic"=F,
"Card_Mechanic"=F,
"Space-Time_Mechanic"=F,
"Abstract_Strategy_Mechanic"=F)
for (i in 1:nrow(data)) {
#Categories
if(str_contains(str_contains(str_replace_all(data$categories[i]," ",""),activity_cat),TRUE)) {
data$Activity_Game[i]=T
}
if(str_contains(str_contains(str_replace_all(data$categories[i]," ",""),component_cat),TRUE)) {
data$Component_Game[i]=T
}
if(str_contains(str_contains(str_replace_all(data$categories[i]," ",""),non_game_cat),TRUE)) {
data$`Non-Game`[i]=T
}
if(str_contains(str_contains(str_replace_all(data$categories[i]," ",""),wargames_cat),TRUE)) {
data$Wargame[i]=T
}
if(str_contains(str_contains(str_replace_all(data$categories[i]," ",""),skills_cat),TRUE)) {
data$Skill_Game[i]=T
}
if(str_contains(str_contains(str_replace_all(data$categories[i]," ",""),entertainment_media_cat),TRUE)) {
data$Entertainment_Media_Game[i]=T
}
if(str_contains(str_contains(str_replace_all(data$categories[i]," ",""),thematic_cat),TRUE)) {
data$Thematic_Game[i]=T
}
#Mechanics
if(str_contains(str_contains(str_replace_all(data$mechanics[i]," ",""),ip_mech),TRUE)) {
data$Interpersonal_Mechanic[i]=T
}
if(str_contains(str_contains(str_replace_all(data$mechanics[i]," ",""),resource_mech),TRUE)) {
data$Resource_Mechanic[i]=T
}
if(str_contains(str_contains(str_replace_all(data$mechanics[i]," ",""),card_mech),TRUE)) {
data$Card_Mechanic[i]=T
}
if(str_contains(str_contains(str_replace_all(data$mechanics[i]," ",""),spacetime_mech),TRUE)) {
data$`Space-Time_Mechanic`[i]=T
}
if(str_contains(str_contains(str_replace_all(data$mechanics[i]," ",""),strategy_mech),TRUE)) {
data$Abstract_Strategy_Mechanic[i]=T
}
}
data = data %>%
select(!categories) %>%
select(!mechanics)
glimpse(data)
## Rows: 4,934
## Columns: 26
## $ Rank <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, …
## $ Name <chr> "Gloomhaven", "Pandemic Legacy: Season 1", …
## $ Min_Players <dbl> 1, 2, 2, 2, 1, 2, 2, 1, 2, 2, 2, 2, 1, 2, 1…
## $ Max_Players <dbl> 4, 4, 4, 2, 5, 4, 5, 5, 2, 4, 4, 4, 7, 5, 5…
## $ Avg_Time <dbl> 150, 60, 240, 180, 120, 240, 150, 115, 30, …
## $ Min_Time <dbl> 90, 60, 180, 120, 120, 180, 60, 90, 30, 75,…
## $ Max_Time <dbl> 150, 60, 240, 180, 120, 240, 150, 115, 30, …
## $ Year_Pubd <dbl> 2017, 2015, 2015, 2005, 2016, 2016, 2012, 2…
## $ Avg_Rating <dbl> 9.01310, 8.66575, 8.65702, 8.35188, 8.38331…
## $ Geek_Rating <dbl> 8.52234, 8.49837, 8.32401, 8.21012, 8.17328…
## $ Num_Votes <dbl> 9841, 23489, 10679, 29923, 20468, 11779, 27…
## $ Min_Age <dbl> 12, 13, 14, 13, 12, 14, 12, 14, 10, 12, 12,…
## $ Num_Owned <dbl> 18217, 38105, 14147, 41094, 26145, 18673, 3…
## $ Complexity <dbl> 3.7720, 2.8056, 4.3538, 3.5446, 3.2465, 3.6…
## $ Activity_Game <lgl> FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, TRU…
## $ Component_Game <lgl> TRUE, FALSE, TRUE, FALSE, FALSE, TRUE, FALS…
## $ `Non-Game` <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, F…
## $ Wargame <lgl> FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, FAL…
## $ Skill_Game <lgl> FALSE, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE…
## $ Entertainment_Media_Game <lgl> FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, FAL…
## $ Thematic_Game <lgl> TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE,…
## $ Interpersonal_Mechanic <lgl> TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE,…
## $ Resource_Mechanic <lgl> FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FAL…
## $ Card_Mechanic <lgl> TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, …
## $ `Space-Time_Mechanic` <lgl> TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, …
## $ Abstract_Strategy_Mechanic <lgl> TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, TRU…
#More Cleaning
data.1= data %>%
na.omit()%>%
mutate(Avg_Num_Players= round((Max_Players-Min_Players)/2, digits=0))%>% #create a variable for Avg_Num_Players
filter(Year_Pubd>1500)%>% #excluding the games that were published before 1500, and therefore our models can only be used for the games that are published after 1500
mutate(Duration= 2018-Year_Pubd+1)%>% #create a variable for duration
select(., -c("Name")) #excluding the variable name
head(data.1)
## # A tibble: 6 × 27
## Rank Min_Players Max_Players Avg_Time Min_Time Max_Time Year_Pubd Avg_Rating
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 1 4 150 90 150 2017 9.01
## 2 2 2 4 60 60 60 2015 8.67
## 3 3 2 4 240 180 240 2015 8.66
## 4 4 2 2 180 120 180 2005 8.35
## 5 5 1 5 120 120 120 2016 8.38
## 6 6 2 4 240 180 240 2016 8.50
## # … with 19 more variables: Geek_Rating <dbl>, Num_Votes <dbl>, Min_Age <dbl>,
## # Num_Owned <dbl>, Complexity <dbl>, Activity_Game <lgl>,
## # Component_Game <lgl>, Non-Game <lgl>, Wargame <lgl>, Skill_Game <lgl>,
## # Entertainment_Media_Game <lgl>, Thematic_Game <lgl>,
## # Interpersonal_Mechanic <lgl>, Resource_Mechanic <lgl>, Card_Mechanic <lgl>,
## # Space-Time_Mechanic <lgl>, Abstract_Strategy_Mechanic <lgl>,
## # Avg_Num_Players <dbl>, Duration <dbl>
#AVG_TIME
#Removing outliers
Q <- quantile(data.1$Avg_Time, probs=c(.25, .75), na.rm = FALSE)
iqr <- IQR(data.1$Avg_Time)
up <- Q[2]+1.5*iqr # Upper Range
low<- Q[1]-1.5*iqr # Lower Range
data.avg.time<- subset(data.1, data.1$Avg_Time > (Q[1] - 1.5*iqr) & data.1$Avg_Time < (Q[2]+1.5*iqr))
data.avg.time.1= data.avg.time %>%
select(.,-c( "Min_Time","Max_Time")) #excluding Min_Time & Max_Time since we are trying to predict Avg_Time
#Inspecting relationships
plot(Avg_Time~., data = data.avg.time.1)
#stepwise selection
Full = lm(Avg_Time~., data = data.avg.time.1)
MSE = (summary(Full)$sigma)^2
none = lm(Avg_Time ~1, data= data.avg.time.1)
step_model=step(none, scope=list(upper=Full), scale=MSE, trace = FALSE)
summary(step_model)$adj.r.squared
## [1] 0.569625
#Backward elimination
back_model=step(Full, scale=MSE, trace = FALSE)
summary(back_model)$adj.r.squared
## [1] 0.5709816
# there is no a big difference between the two, we continue with stepwise
#Graphing subsets (using stepwise selection) and the corresponding adj-r^2 for each set
ret.full <- regsubsets(Avg_Time~.,data=data.avg.time.1,nvmax=22)
## Warning in leaps.setup(x, y, wt = wt, nbest = nbest, nvmax = nvmax, force.in =
## force.in, : 1 linear dependencies found
sum.ret.full <- summary(ret.full)
sum.ret.full$rsq
## [1] 0.5174180 0.5341860 0.5443838 0.5520836 0.5563290 0.5595015 0.5622489
## [8] 0.5648786 0.5661493 0.5677297 0.5687937 0.5698834 0.5705846 0.5713521
## [15] 0.5720525 0.5727178 0.5728883 0.5730215 0.5731574 0.5732924 0.5733262
## [22] 0.5733351
plot(ret.full,scale='adjr2')
#Creating models with .54-.57 adj r^2:
Avg_Time_Mod1= lm(Avg_Time ~ Complexity +`Non-Game`+Component_Game +Min_Age+
Wargame+Entertainment_Media_Game +`Space-Time_Mechanic`+
Min_Players+Interpersonal_Mechanic+Resource_Mechanic+
Card_Mechanic + Activity_Game+ Duration, data = data.avg.time.1)
Avg_Time_Mod2= lm(Avg_Time ~ Rank+Min_Players+Min_Age+Complexity+
Component_Game+`Non-Game`+Wargame+Skill_Game+Entertainment_Media_Game+
`Space-Time_Mechanic`+ Duration,data= data.avg.time.1)
Avg_Time_Mod3= lm(Avg_Time ~ Min_Players+Complexity+Component_Game+`Non-Game`+`Space-Time_Mechanic`,data= data.avg.time.1)
Avg_Time_Mod4= lm(Avg_Time ~Min_Players+Num_Votes+Min_Age+Complexity+Activity_Game+
Component_Game+`Non-Game`+Wargame+Entertainment_Media_Game+
Resource_Mechanic+Card_Mechanic+`Space-Time_Mechanic`,data= data.avg.time.1)
Avg_Time_Mod5= lm(Avg_Time ~Rank+Min_Players+Min_Age+Geek_Rating+Complexity+Activity_Game+
Component_Game+`Non-Game`+Wargame+Entertainment_Media_Game+
Resource_Mechanic+Card_Mechanic+`Space-Time_Mechanic`+Avg_Num_Players ,data= data.avg.time.1)
Avg_Time_Mod6= lm(Avg_Time ~Year_Pubd +Geek_Rating+Num_Votes+Min_Age+Num_Owned+Complexity+Activity_Game+
Component_Game+`Non-Game`+Wargame+Skill_Game+Entertainment_Media_Game+
Thematic_Game+Interpersonal_Mechanic+Resource_Mechanic+Card_Mechanic+
`Space-Time_Mechanic` ,data= data.avg.time.1)
Avg_Time_Mod7= lm(Avg_Time ~Min_Players+Max_Players+Year_Pubd+Avg_Rating+
Num_Votes+Min_Age+Num_Owned+Complexity+Activity_Game+
Component_Game+`Non-Game`+Wargame+Skill_Game+Entertainment_Media_Game+
Thematic_Game+Interpersonal_Mechanic+Resource_Mechanic+Card_Mechanic+
`Space-Time_Mechanic`,data= data.avg.time.1)
Avg_Time_Mod8= lm(Avg_Time ~Min_Players+Max_Players+Year_Pubd+Avg_Rating+
Min_Age+Complexity+Activity_Game+Component_Game+`Non-Game`+Wargame+
Skill_Game+Entertainment_Media_Game+Thematic_Game+Interpersonal_Mechanic+
Resource_Mechanic+Card_Mechanic+`Space-Time_Mechanic` ,data= data.avg.time.1)
Avg_Time_Mod9= lm(Avg_Time ~Min_Age+Complexity+Activity_Game+
`Non-Game`+Wargame+Entertainment_Media_Game+
Resource_Mechanic+Card_Mechanic+`Space-Time_Mechanic` ,data= data.avg.time.1)
Avg_Time_Mod10= lm(Avg_Time ~Min_Players+Min_Age+Complexity+
Component_Game+`Non-Game`,data= data.avg.time.1)
#Calculate the MAE for the 10 models,and create a table with the models' number and the coresponding MAEs, and adj r^2
data.avg.time.2= data.avg.time.1%>%
add_predictions(Avg_Time_Mod1,var="Mod1")%>%
add_predictions(Avg_Time_Mod2,var="Mod2")%>%
add_predictions(Avg_Time_Mod3,var="Mod3")%>%
add_predictions(Avg_Time_Mod4,var="Mod4")%>%
add_predictions(Avg_Time_Mod5,var="Mod5")%>%
add_predictions(Avg_Time_Mod6,var="Mod6")%>%
add_predictions(Avg_Time_Mod7,var="Mod7")%>%
add_predictions(Avg_Time_Mod8,var="Mod8")%>%
add_predictions(Avg_Time_Mod9,var="Mod9")%>%
add_predictions(Avg_Time_Mod10,var="Mod10")
Avg_time_Model_num= c(1:10)
Avg_time_MAE= c(MAE.func(data.avg.time.2$Avg_Time, data.avg.time.2$Mod1),
MAE.func(data.avg.time.2$Avg_Time, data.avg.time.2$Mod2),
MAE.func(data.avg.time.2$Avg_Time, data.avg.time.2$Mod3),
MAE.func(data.avg.time.2$Avg_Time, data.avg.time.2$Mod4),
MAE.func(data.avg.time.2$Avg_Time, data.avg.time.2$Mod5),
MAE.func(data.avg.time.2$Avg_Time, data.avg.time.2$Mod6),
MAE.func(data.avg.time.2$Avg_Time, data.avg.time.2$Mod7),
MAE.func(data.avg.time.2$Avg_Time, data.avg.time.2$Mod8),
MAE.func(data.avg.time.2$Avg_Time, data.avg.time.2$Mod9),
MAE.func(data.avg.time.2$Avg_Time, data.avg.time.2$Mod10))
Avg_time_adjR= c(summary(Avg_Time_Mod1)$adj.r.squared,
summary(Avg_Time_Mod2)$adj.r.squared,
summary(Avg_Time_Mod3)$adj.r.squared,
summary(Avg_Time_Mod4)$adj.r.squared,
summary(Avg_Time_Mod5)$adj.r.squared,
summary(Avg_Time_Mod6)$adj.r.squared,
summary(Avg_Time_Mod7)$adj.r.squared,
summary(Avg_Time_Mod8)$adj.r.squared,
summary(Avg_Time_Mod9)$adj.r.squared,
summary(Avg_Time_Mod10)$adj.r.squared)
avg.time.Final= data.frame(Avg_time_Model_num, Avg_time_MAE,Avg_time_adjR )
avg.time.Final
## Avg_time_Model_num Avg_time_MAE Avg_time_adjR
## 1 1 16.76076 0.5687468
## 2 2 16.85368 0.5657726
## 3 3 17.17756 0.5495719
## 4 4 16.80095 0.5676799
## 5 5 16.79341 0.5679941
## 6 6 16.78509 0.5682809
## 7 7 16.74561 0.5692668
## 8 8 16.75734 0.5688422
## 9 9 16.99522 0.5589256
## 10 10 17.09282 0.5527875
#AVG_RATING
#Removing outliers
Q2 <- quantile(data.1$Avg_Rating, probs=c(.25, .75), na.rm = FALSE)
iqr2 <- IQR(data.1$Avg_Rating)
data.avg.rating<- subset(data.1, data.1$Avg_Rating > (Q2[1] - 1.5*iqr2) & data.1$Avg_Rating < (Q2[2]+1.5*iqr2))
data.avg.rating.1= data.avg.rating %>%
select(.,-c( "Geek_Rating"))
#Inspecting relationships
plot(Avg_Rating~., data = data.avg.rating.1)
#stepwise selection
Full_rating = lm(Avg_Rating~., data = data.avg.rating.1)
MSE_rating = (summary(Full_rating)$sigma)^2
none_rating = lm(Avg_Rating ~1, data= data.avg.rating.1)
step_model_rating=step(none_rating, scope=list(upper=Full_rating), scale=MSE_rating, trace = FALSE)
summary(step_model)$adj.r.squared
## [1] 0.569625
#Graphing subsets (using stepwise selection) and the corresponding adj-r^2 for each set
ret.full2 <- regsubsets(Avg_Rating~.,data=data.avg.rating.1,nvmax=22)
## Warning in leaps.setup(x, y, wt = wt, nbest = nbest, nvmax = nvmax, force.in =
## force.in, : 2 linear dependencies found
## Reordering variables and trying again:
sum.ret.full2 <- summary(ret.full2)
sum.ret.full2$rsq
## [1] 0.2874193 0.4213577 0.4363141 0.4548188 0.4631443 0.4693492 0.4762436
## [8] 0.4785884 0.4800510 0.4812125 0.4822758 0.4834550 0.4844673 0.4853979
## [15] 0.4861244 0.4867994 0.4874470 0.4879353 0.4883713 0.4884741 0.4885531
## [22] 0.4886108 0.4886255
plot(ret.full2,scale='adjr2')
#Creating models with the heighst adj r^2:
Avg.rating.Mod1= lm(Avg_Rating ~ Complexity + Rank + Duration + Wargame +
Thematic_Game + Min_Age + Min_Players + Interpersonal_Mechanic +
`Space-Time_Mechanic` + Num_Votes + Abstract_Strategy_Mechanic +
Num_Owned + Resource_Mechanic + Entertainment_Media_Game +
Min_Time + Avg_Time + Component_Game,
data = data.avg.rating.1)
Avg.rating.Mod2= lm(Avg_Rating ~Rank+Min_Players+Max_Players +Min_Time+Max_Time+Year_Pubd+
Num_Votes+Min_Age+Num_Owned+Complexity+Activity_Game+
`Non-Game`+Skill_Game+Entertainment_Media_Game+Thematic_Game+
Interpersonal_Mechanic+Resource_Mechanic+Card_Mechanic+
Abstract_Strategy_Mechanic+Avg_Num_Players ,data= data.avg.rating.1)
Avg.rating.Mod3=lm(Avg_Rating ~Rank+Min_Players+
Num_Votes+Num_Owned+Activity_Game+Skill_Game+
Interpersonal_Mechanic+Duration ,data= data.avg.rating.1)
Avg.rating.Mod4= lm(Avg_Rating ~Rank+Min_Players+Max_Players+Min_Time+Max_Time+
Num_Votes+Min_Age+Num_Owned+Complexity+Activity_Game+
Skill_Game+Thematic_Game+Interpersonal_Mechanic+Resource_Mechanic+Card_Mechanic+
Abstract_Strategy_Mechanic+Avg_Num_Players ,data= data.avg.rating.1)
Avg.rating.Mod5= lm(Avg_Rating ~Rank+Skill_Game+
Interpersonal_Mechanic+Duration ,data= data.avg.rating.1)
#Calculate the MAE for the 5 models,and create a table with the models' number, the corresponding MAEs, and adj r^2
data.avg.rating.2= data.avg.rating.1%>%
add_predictions(Avg.rating.Mod1,var="Mod1")%>%
add_predictions(Avg.rating.Mod2,var="Mod2")%>%
add_predictions(Avg.rating.Mod3,var="Mod3")%>%
add_predictions(Avg.rating.Mod4,var="Mod4")%>%
add_predictions(Avg.rating.Mod5,var="Mod5")
Avg_rating_Model_num= c(1:5)
Avg_rating_MAE= c(MAE.func(data.avg.rating.2$Avg_Rating, data.avg.rating.2$Mod1),
MAE.func(data.avg.rating.2$Avg_Rating, data.avg.rating.2$Mod2),
MAE.func(data.avg.rating.2$Avg_Rating, data.avg.rating.2$Mod3),
MAE.func(data.avg.rating.2$Avg_Rating, data.avg.rating.2$Mod4),
MAE.func(data.avg.rating.2$Avg_Rating, data.avg.rating.2$Mod5))
Avg_rating_adjR= c(summary(Avg.rating.Mod1)$adj.r.squared,
summary(Avg.rating.Mod2)$adj.r.squared,
summary(Avg.rating.Mod3)$adj.r.squared,
summary(Avg.rating.Mod4)$adj.r.squared,
summary(Avg.rating.Mod2)$adj.r.squared)
avg.rating.Final= data.frame(Avg_rating_Model_num, Avg_rating_MAE,Avg_rating_adjR )
avg.rating.Final
## Avg_rating_Model_num Avg_rating_MAE Avg_rating_adjR
## 1 1 0.3009473 0.4844101
## 2 2 0.3038696 0.4761728
## 3 3 0.3705607 0.2522501
## 4 4 0.3100063 0.4588023
## 5 5 0.3794632 0.4761728